博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WKWebView捕获HTML弹出的Alert和Confirm
阅读量:6606 次
发布时间:2019-06-24

本文共 3051 字,大约阅读时间需要 10 分钟。

之前用WebView装载一个网页时,弹出Alert时会显示网址,由于不想把网址暴露给用户这样显示就不是很友好了。UIWebView文档内没有找到可以捕获这类信息的API。GOOGLE了下发现了WKWebView组件,WKWebView是IOS8新推出的组件,目的是给出一个新的高性能的 Web View 解决方案,摆脱过去 UIWebView 的老旧笨重特别是内存占用量巨大的问题。以下为示例代码:

////  ViewController.swift//  KenWKWebView////  Created by KenNgai on 10/10/15.//  Copyright © 2015 IT. All rights reserved.//import UIKitimport WebKit //导入WebKit  WKWebView应该是用Webkit内核class ViewController: UIViewController,WKNavigationDelegate,WKUIDelegate {    var wkBrowser:WKWebView!        override func viewDidLoad() {        super.viewDidLoad()        self.wkBrowser = WKWebView(frame: self.view.frame)        //self.wkBrowser.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!))        let html = "DialogAlert
Logout" self.wkBrowser.loadHTMLString(html, baseURL: nil) self.wkBrowser.navigationDelegate = self self.wkBrowser.UIDelegate = self self.view.addSubview(wkBrowser) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }}//捕捉异常信息private typealias wkNavigationDelegate = ViewControllerextension wkNavigationDelegate { func webView(webView: WKWebView, didFailNavigation navigation: WKNavigation!, withError error: NSError) { NSLog(error.debugDescription) } func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) { NSLog(error.debugDescription) }}private typealias wkUIDelegate = ViewControllerextension wkUIDelegate { //HTML页面Alert出内容 func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void) { let ac = UIAlertController(title: webView.title, message: message, preferredStyle: UIAlertControllerStyle.Alert) ac.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: { (a) -> Void in completionHandler() })) self.presentViewController(ac, animated: true, completion: nil) } //HTML页面弹出Confirm时调用此方法 func webView(webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: (Bool) -> Void) { let ac = UIAlertController(title: webView.title, message: message, preferredStyle: UIAlertControllerStyle.Alert) ac.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (ac) -> Void in completionHandler(true) //按确定的时候传true })) ac.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: { (ac) -> Void in completionHandler(false) //取消传false })) self.presentViewController(ac, animated: true, completion: nil) }}

 

如果你访问的页面的协议是https那么要在info.list同添加以下Key:

<key>NSAppTransportSecurity</key>

    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

具体可参考:https://lvwenhan.com/ios/460.html

 

转载地址:http://htbso.baihongyu.com/

你可能感兴趣的文章
MPLS基础一(上)
查看>>
穿越泥地(mud) (BFS)
查看>>
HDU 5861 Road(线段树 区间修改 单点查询)
查看>>
使用JdbcTemplate过程中使用到多个参数和like模糊
查看>>
教程-Delphi各版本与工具下载地址
查看>>
vs的【warning C4996:'fopen': This function or variable may be unsafe】解决方案
查看>>
孟岩:通证(token)和通证经济的目的在于改善现有经济的效率性
查看>>
对空间数据(Shape)重新排序
查看>>
解决eclipse中无法删除Tomcat服务器中的项目,报maven is required and cannot be removed from the server错误情况...
查看>>
日期选择器-设计-js组建-细节点记录
查看>>
修正海压的作用
查看>>
自学EF一些小笔记
查看>>
vim的插件,可以高亮对齐线
查看>>
PendingIntent与Intent区别
查看>>
关于领域驱动设计(DDD)仓储的思考
查看>>
字符串或数组全排列的三种方法
查看>>
Android开发最强模拟器Genymotion的安装及使用教程。附注释图详解
查看>>
MP20 MBO issue summary
查看>>
韩顺刚-tcp报文头协议详细分析第一包数据:序号是0,发送数据的长度是0,因为没有收到对端的数据,所以确认号是0, Syn的标志位设置成1,这里没有发送的数据,只发送TCP的20个字节的头部...
查看>>
尚学堂210 反射机制读取注解
查看>>